package com.telit.firecommand.feign;

import com.telit.common.vo.user.Result;
import com.telit.firecommand.dto.FeignTaskNumDto;
import com.telit.firecommand.dto.PatPersonPatrolInfoPageDto;
import com.telit.firecommand.dto.ReleaseTaskDto;
import com.telit.firecommand.dto.TsTaskInfoPageDto;
import com.telit.firecommand.feign.impl.PatrolFeignClientFallBack;
import com.telit.firecommand.vo.FeignTaskNumVo;
import com.telit.firecommand.vo.TaskInfoVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;

import java.util.List;


/**
 * Create by Chencf 2022/09/17
 */
@FeignClient(name = "pt-patrol", fallback = PatrolFeignClientFallBack.class)
public interface PatrolFeignClient {


    //护林员下发任务接口
    @PostMapping(value = "/feign/releaseTask")
    Result feignReleaseTask(@RequestBody ReleaseTaskDto releaseTaskDto);

    /**
     * 依据查询条件分页查询人员巡护记录列表
     */
    @GetMapping("/feign/getPatrolInfoList")
    Result findPersonPatrolInfoList(@SpringQueryMap PatPersonPatrolInfoPageDto patPersonPatrolInfoPageDto);

    /**
     * 依据巡护、巡林记录ID,获取详情
     */
    @GetMapping("/feign/getPatrolInfoDetail/{id}")
    Result feignReleaseTask(@PathVariable("id") Long id);


    /**
     * 根据林长、护林员ID、任务类型，二级任务类型、任务状态、任务开始、结束时间分页获取任务列表(巡护任务)
     */
    @GetMapping("/feign/getTaskListByPerson")
    Result getTaskListByPerson(@SpringQueryMap TsTaskInfoPageDto pageDto);

    /**
     * 根据任务ID获取任务详情（包含任务信息、反馈信息、巡护记录等）（巡护任务详情）
     */
    @GetMapping("/feign/getTaskDetail")
    Result<TaskInfoVo> findTaskInfoDetail(@RequestParam("taskId") Long taskId, @RequestParam("userId") Long userId);

    /**
     * 根据任务ID获取任务详情（包含任务信息、反馈信息、巡护记录等）（巡护任务详情）
     */
    @GetMapping("/feign/countForTask")
    Result<List<FeignTaskNumVo>> countForTask(@SpringQueryMap FeignTaskNumDto feignTaskNumDto);


    @GetMapping("/feign/findListForFireId")
    Result fireTaskList(@RequestParam("fireId") String fireId, @RequestParam("current") Integer current,
                        @RequestParam("size") Integer size);


    //根据火情id获取执行护林员列表
    @GetMapping("/feign/findHlyListForFireId")
    Result findHlyListForFireId(@RequestParam("fireId") String fireId, @RequestParam("current") Integer current,
                                @RequestParam("size") Integer size);

    //根据火情id + 护林员id，获取执行任务列表
    @GetMapping("/feign/findTaskListForFireId")
    Result findTaskListForFireId(@RequestParam("fireId") String fireId, @RequestParam("current") Integer current,
                                 @RequestParam("size") Integer size, @RequestParam("personId") String personId);

}
